<?php
error_reporting(E_ALL);
set_time_limit(0);
function onMessage($conn)
{
	$content= 'test';
	$header = '';
	$header .= "HTTP/1.1 200 OK\r\n";
	$header .= "Date: ".gmdate('D, d M Y H:i:s T')."\r\n";
	$header .= "Content-Type: text/html;charset=utf-8\r\n";
	$header .= "Content-Length: ".strlen($content)."\r\n\r\n";
	$header .= $content;
	socket_write($conn, $header);
}

$address = '0.0.0.0';
$port = 8192;

//创建端口
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
echo "socket_create() failed:reason:" . socket_strerror(socket_last_error()) . "\n";
}

//绑定
if (socket_bind($sock, $address, $port) === false) {
echo "socket_bind() failed :reason:" . socket_strerror(socket_last_error($sock)) . "\n";
}

//监听
if (socket_listen($sock, 5) === false) {
echo "socket_bind() failed :reason:" . socket_strerror(socket_last_error($sock)) . "\n";
}

while (true) {
	//得到一个链接
	if (($msgsock = socket_accept($sock)) === false) {
	echo "socket_accepty() failed :reason:".socket_strerror(socket_last_error($sock)) . "\n";
	break;
	}

	//welcome 发送到客户端
	$msg = "1.<font color='red'>server send:welcome</font><br/>";
	call_user_func('onMessage',$msgsock); //返回信息给客户端
	echo "read client message\n";
	$buf = socket_read($msgsock, 8192); //获取客户端发送过来的信息
	$talkback = "2.received message:$buf\n";
	echo $talkback;
/*
	if (false === socket_write($msgsock, $talkback, strlen($talkback))) { //返回信息给客户端
		echo "socket_write() failed reason:" . socket_strerror(socket_last_error($sock)) ."\n";
	} else {
		echo 'send success';
	}
	*/
	socket_close($msgsock);
}

socket_close($sock);
